An application binary interface (ABI) defines how a user space program may interact with the underlying operating system or another program. An ABI may include, e.g., requirements to sizes, layout, and alignment of data types; procedure calling conventions; and/or binary formats of object, executable and library files. An ABI may also define a system call interface allowing a user space program invoke operating system functions.